﻿'Params
'track (Required (unless mbid)] : The track name
'artist (Required (unless mbid)] : The artist name
'mbid (Optional) : The musicbrainz id for the track
'limit (Optional) : The number of results to fetch per page. Defaults to 50.
'autocorrect[0|1] (Optional) : Transform misspelled artist and track names into correct artist and track names, returning the correct version instead. The corrected artist and track name will be returned in the response.
'page (Optional) : The page number to fetch. Defaults to first page.
'api_key (Required) : A Last.fm API key.
'Auth
'This service does not require authentication. 

Public Structure TrackGetShoutsResponse
	Dim shouts() As Shout
End Structure

Public Class TrackGetShouts
	Inherits BaseRequest
	Dim artist As String = ""
	Dim album As String = ""
	Dim mbid As String = ""
	Dim lang As String = ""
	Dim autocorrect As String = ""
	Dim page As String = ""
	Dim limit As String = ""

	Public xmlresponse As XDocument = Nothing

	Public Sub New()
		Me.artist = artist
		Me.album = album
		Me.mbid = mbid
		Me.lang = lang
		Me.autocorrect = autocorrect
		Me.page = page
		Me.limit = limit
	End Sub

	Public Sub sendRequest()
		InitializeMembers("album.getInfo")

		AddMember("artist", artist, String.IsNullOrEmpty(mbid))
		AddMember("album", album, String.IsNullOrEmpty(mbid))
		AddMember("mbid", mbid, False)
		AddMember("lang", lang, False)
		AddMember("autocorrect", autocorrect, False)
		AddMember("username", My.Settings.user_name, False)
		AddMember("api_key", My.Settings.api_key, False)
		xmlresponse = sendPOSTResponse()
	End Sub

	Public Function getResponse() As TrackGetShoutsResponse
		Dim response As TrackGetShoutsResponse = Nothing
		Dim count As Integer
		Try
			count = xmlresponse.<lfm>.<shouts>.<shout>.Count()
		Catch ex As Exception
			Return response
		End Try
		If (count > 0) Then
			ReDim response.shouts(count - 1)
			For i As Integer = 0 To count - 1
				response.shouts(i) = New Shout(xmlresponse.<lfm>.<shouts>.<shout>(i))
			Next
		End If
		Return response
	End Function
End Class
